php.ini文件配置上传限制

php.ini文件php7.4默认文件上传最大是2m

1
upload_max_filesize=要上传最大的文件

上发最多默认是20

1
max_file_uploads = 要可以连续发送几个

$_FILES上传参数

我们上发的文件都是用$_FILES来获得的里面有参数
print_r()来查看一下
a.html代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<head>
<meta charset="utf-8">
<title>文件上发</title>
</head>
<body>

<form action="a.php" method="post" enctype="multipart/form-data">
<label for="file">要上发的文件名:</label>
<input type="file" name="wj" id="file"><br>
<input type="submit" name="submit" value="点击提交">
</form>

</body>
</html>

a.php代码

1
2
<?php
print_r($_FILES)

$_FILES是一个数组他保留这上传文件信息

可以看见数组

我们就可以单独的数组进行显示

1
2
3
4
5
$_FILES["file"]["name"] - 被上传文件的名称
$_FILES["file"]["type"] - 被上传文件的类型
$_FILES["file"]["size"] - 被上传文件的大小,以字节计
$_FILES["file"]["error"] - 由文件上传导致的错误代码0是就是没有报错
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称

我们就可以写个a.php代码为

1
2
3
4
5
6
7
8

<?php
echo "上传:" . $_FILES["wj"]["name"] . "<br />";
echo "类型:". $_FILES["wj"]["type"] . "<br />";
echo "大小: ". $_FILES["wj"]["size"] . "<br />";
echo "报错代码:". $_FILES["wj"]["error"]."<br />";
echo "存储在: " . $_FILES["wj"]["tmp_name"];
?>

结果

文件移动

move_uploaded_file()函数
这个函数有两个参数

第一个猜数 必需。规定要移动的文件。

第二个参数 必需。规定文件的新位置。
a.html代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<head>
<meta charset="utf-8">
<title>文件上发</title>
</head>
<body>

<form action="a.php" method="post" enctype="multipart/form-data">
<label for="file">要上发的文件名:</label>
<input type="file" name="wj" id="file"><br>
<input type="submit" name="submit" value="点击提交">
</form>

</body>
</html>

a.php代码

1
2
3
4
5
<?php 
$a="C:\phpstudy_pro\WWW\sq\a.png";
move_uploaded_file($_FILES["wj"]["tmp_name"],$a);
echo "文件在".$a;
?>

安全上发文件

is_uploaded_file()函数
里面有一个参数必填,是文件名
如果 file 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。

该函数可以用于确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如 /etc/passwd。

这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。

1
2
is_uploaded_file($_FILES["wj"]["tmp_name"])